//
//  main.swift
//  ProjectPattern
//
//  Created by mac on 2017/11/6.
//  Copyright © 2017年 RRC. All rights reserved.
//

import Foundation

print("Hello, World!")

//首先客户找到需求组说，过来谈需求，并修改
print("------------------客户要求增加一项需求----------------")
let rg:Group = RequirmentGroup()
//找到需求组
rg.find()
//增加一个需求
rg.add()
//要求变更计划
rg.plan()

//首先客户找到美工组说，过来谈页面，并修改
print("-----------------客户要求删除一个页面------------------")
let pg:Group = PageGroup()
//找到美工组
pg.find()
//删除一个页面
pg.delete()
//要求变更计划
pg.plan()

print("-----------------增加一个需求---------------------")
//定义我们的接头人
let xiaoSan = Invoker()
//客户给我们一命令来
let command:Command = AddRequirementCommand()
//接头人接收到命令
xiaoSan.setCommand(command: command)
//接头人执行命令
xiaoSan.action()

print("----------------客户要求删除一个页面-----------------")
let deleCommand:Command = DeletePageCommand()
xiaoSan.setCommand(command: deleCommand)
xiaoSan.action()

/**
    命令模式定义：将一个请求封装成一个对象，从而让你使用不同的请求把客户端参数化，对请求排队或记录请求日志，可以提供命令的撤销和恢复功能。
 */




